home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / gobble.asc < prev    next >
Text File  |  1983-08-20  |  6KB  |  171 lines

  1. 5 'Gobble --- Version 4/24/82 --- With Auto-Scoring
  2. 10 CLS:KEY OFF:DEF SEG:POKE 106,0
  3. 12 ON ERROR GOTO 18
  4. 14 PLAY ""
  5. 16 ON ERROR GOTO 0:GOTO 20
  6. 18 PRINT "SORRY, YOU MUST LOAD 'BASICA' TO RUN THIS PROGRAM.":PRINT:RESUME 19
  7. 19 ON ERROR GOTO 0:END
  8. 20 DEFINT A-Z:DIM X(4),Y(4),VX(4),VY(4),U$(4)
  9. 30 I=0:A$="":N=0:L=1:C1=22:C2=59:DULL=7:BRIGHT=15
  10. 35 GOSUB 1000
  11. 40 GOSUB 2000
  12. 60 S=0:YES=1:NO=0
  13. 80 C=0:A$=INKEY$:STRIG ON:IF STRIG(1)=-1 THEN STICKS=YES:GOTO 100
  14. 81 IF A$=CHR$(27) THEN CHAIN "menu",0
  15. 90 Z=RND*30000:RANDOMIZE Z:IF A$="" THEN 80 ELSE IF ASC(A$)<>71 AND ASC(A$)<>103 THEN GOTO 80
  16. 100 PLAY "MBMST250L4O3G4P16O4G8.P16E8C8G4E4P4O3G+4O4G+8.P16F8C+8G+4F4P4T130O3G8  F+8F+16G16G+16A16A+16B16O4C8"
  17. 102 COLOR 15,0:CLS :STRIG OFF
  18. 105 PRINT TAB(18) CHR$(201);STRING$(20,205);CHR$(32);STRING$(20,205);CHR$(187)
  19. 110 FOR N=0 TO 9
  20. 120 PRINT TAB(18) CHR$(186);STRING$(41,249);CHR$(186)
  21. 130 NEXT
  22. 131 PRINT TAB(18) CHR$(32);STRING$(41,249);CHR$(32)
  23. 132 FOR N=0 TO 9
  24. 133 PRINT TAB(18) CHR$(186);STRING$(41,249);CHR$(186)
  25. 134 NEXT
  26. 135 PRINT TAB(18) CHR$(200);STRING$(20,205);CHR$(32);STRING$(20,205);CHR$(188)
  27. 140 RESTORE
  28. 150 FOR I=0 TO 4
  29. 160 READ X(I),Y(I),VX(I),VY(I)
  30. 170 NEXT
  31. 180 U$(0)=CHR$(249)
  32. 190 FOR I=1 TO 3
  33. 200 U$(I)=U$(0)
  34. 210 NEXT
  35. 220 U$(4)=" "
  36. 230 FOR I=0 TO 3
  37. 240 LOCATE Y(I),X(I),0
  38. 250 PRINT CHR$(2)
  39. 260 NEXT
  40. 270 C=0:H=0
  41. 280 LOCATE Y(4),X(4),0
  42. 290 PRINT CHR$(1)
  43. 300 LOCATE 24,35,0:PRINT "Score = ";S;
  44. 310 A$=INKEY$
  45. 320 A$=INKEY$:IF A$="" GOTO 361
  46. 330 IF ASC(A$)=97 OR ASC(A$)=65 THEN VY(4)=1:VX(4)=0:GOTO 370
  47. 340 IF ASC(A$)=93 THEN VY(4)=0:VX(4)=1:GOTO 370
  48. 350 IF ASC(A$)=91 THEN VY(4)=0:VX(4)=-1:GOTO 370
  49. 359 IF ASC(A$)=113 OR ASC(A$)=81 THEN VY(4)=-1:VX(4)=0:GOTO 370
  50. 360 IF ASC(A$)=32 THEN VY(4)=0:VX(4)=0:GOTO 370
  51. 361 IF STICKS=NO GOTO 370
  52. 362 X=STICK(0)
  53. 363 Y=STICK(1)
  54. 364 IF Y<14 THEN VY(4)=1:VX(4)=0:GOTO 370
  55. 365 IF X<13 THEN VY(4)=0:VX(4)=1:GOTO 370
  56. 366 IF X>91 THEN VY(4)=0:VX(4)=-1:GOTO 370
  57. 367 IF Y>75 THEN VY(4)=-1:VX(4)=0:GOTO 370
  58. 369 VX(4)=0:VY(4)=0
  59. 370 FOR I=0 TO 3
  60. 380 LOCATE Y(I),X(I),0
  61. 390 PRINT U$(I)
  62. 400 Y(I)=Y(I)+VY(I)
  63. 410 IF Y(I)<2 OR Y(I)>C1 THEN VY(I)=-VY(I):GOTO 400
  64. 420 X(I)=X(I)+VX(I)
  65. 430 IF X(I)<19 OR X(I)>C2 THEN VX(I)=-VX(I):GOTO 420
  66. 440 LOCATE Y(I),X(I),0
  67. 450 U$(I)=CHR$(SCREEN(Y(I),X(I)))
  68. 460 PRINT CHR$(2)
  69. 470 IF U$(I)=CHR$(1) THEN H=1
  70. 480 IF U$(I)<>CHR$(2) GOTO 550
  71. 490 FOR N=0 TO 3
  72. 500 IF N=I GOTO 540
  73. 510 IF X(I)<>X(N) GOTO 540
  74. 520 IF Y(I)<>Y(N) THEN 540
  75. 530 U$(I)=U$(N):N=3
  76. 540 NEXT N
  77. 550 NEXT
  78. 560 IF H=1 THEN 900
  79. 570 LOCATE Y(4),X(4),0
  80. 580 PRINT " "
  81. 590 Y(4)=Y(4)+VY(4):X(4)=X(4)+VX(4)
  82. 591 IF Y(4)=12 AND X(4)=18 AND VX(4)=-1 THEN X(4)=59:GOTO 640
  83. 592 IF Y(4)=12 AND X(4)=60 AND VX(4)=1 THEN X(4)=19:GOTO 640
  84. 593 IF Y(4)=1 AND X(4)=39 AND VY(4)=-1 THEN Y(4)=22:GOTO 640
  85. 594 IF Y(4)=23 AND X(4)=39 AND VY(4)=1 THEN Y(4)=2:GOTO 640
  86. 600 IF Y(4)<2 THEN Y(4)=2:GOTO 620
  87. 610 IF Y(4)>C1 THEN Y(4)=C1
  88. 620 IF X(4)<19 THEN X(4)=19:GOTO 640
  89. 630 IF X(4)>C2 THEN X(4)=C2
  90. 640 LOCATE Y(4),X(4),0
  91. 650 U$(4)=CHR$(SCREEN(Y(4),X(4)))
  92. 660 PRINT CHR$(1)
  93. 670 IF U$(4)=CHR$(2) THEN 900
  94. 680 IF U$(4)=CHR$(249) THEN C=C+1:S=S+L:LOCATE 24,43,0:                           PRINT S;:GOSUB 4000:IF C=860 GOTO 820
  95. 700 U$(4)=" "
  96. 720 FOR I=0 TO 3
  97. 730 IF RND*10>L GOTO 800
  98. 735 IF RND*4>I+L GOTO 745
  99. 740 IF Y(4)>Y(I) THEN VY(I)=VY(I)+1 ELSE VY(I)=VY(I)-1
  100. 745 IF RND*4>I+L GOTO 770
  101. 750 IF X(4)>X(I) THEN VX(I)=VX(I)+1 ELSE VX(I)=VX(I)-1
  102. 760 IF VX(I)<-1 THEN VX(I)=-1:GOTO 770
  103. 765 IF VX(I)>1 THEN VX(I)=1
  104. 770 IF VY(I)<-1 THEN VY(I)=-1:GOTO 800
  105. 780 IF VY(I)>1 THEN VY(I)=1
  106. 800 NEXT
  107. 810 GOTO 320
  108. 820 CLS
  109. 830 PRINT TAB(27) "Next time won't be so easy!":PRINT
  110. 840 PRINT TAB(27) "TRY AGAIN !!!    Level = ";L+1
  111. 845 LOCATE 11,25,0:PRINT "PUSH 'G' OR TRIGGER TO CONTINUE"
  112. 850 L=L+1
  113. 860 GOTO 80
  114. 870 DATA 19,2,1,1,59,2,-1,1,59,22,-1,-1,19,22,1,-1,39,12,0,0
  115. 900 PLAY "MBMLL4T130O0B4B-64A64A-64G64G-64F2"
  116. 910 FOR X=1 TO 6000:NEXT
  117. 920 IF S<SCORE(10) THEN 40
  118. 930 CLS:PRINT"CONGRATULATIONS! YOUR SCORE IS IN THE TOP 10!":PRINT:PRINT:PRINT
  119. 935 A$=INKEY$:IF A$<>"" THEN 935
  120. 940 PRINT"Please enter your name for the permanent record. ---- ";
  121. 950 LINE INPUT NAME.$(10):NAME.$(10)=LEFT$(NAME.$(10),14):SCORE(10)=S
  122. 960 FOR X=9 TO 1 STEP -1
  123. 970 IF SCORE(X) >= SCORE(X+1) THEN 995
  124. 980 SWAP SCORE(X),SCORE(X+1):SWAP NAME.$(X),NAME.$(X+1)
  125. 990 NEXT
  126. 995 GOSUB 1600:GOTO 40
  127. 1000 ON ERROR GOTO 1500
  128. 1020 OPEN "GOBBLE.SCO" FOR INPUT AS #1
  129. 1040 ON ERROR GOTO 0
  130. 1060 FOR X=1 TO 10
  131. 1080 LINE INPUT #1,NAME.$(X) : INPUT #1,SCORE(X)
  132. 1100 NEXT:CLOSE
  133. 1120 RETURN
  134. 1500 CLOSE:RESTORE 2300
  135. 1540 FOR X=1 TO 10
  136. 1560 READ NAME.$(X),SCORE(X)
  137. 1580 NEXT:RESUME 1600
  138. 1600 OPEN "GOBBLE.SCO" FOR OUTPUT AS #1
  139. 1620 FOR X=1 TO 10
  140. 1640 PRINT #1,NAME.$(X):PRINT #1,SCORE(X)
  141. 1660 NEXT:CLOSE
  142. 1680 ON ERROR GOTO 0:RETURN
  143. 2000 CLS:COLOR BRIGHT
  144. 2020 LOCATE 4,24:PRINT "THE TEN TOP SCORES ARE:"
  145. 2040 FOR X=1 TO 5
  146. 2060 LOCATE 6+2*X,1
  147. 2080 IF RIGHT$(NAME.$(X),1)="|" THEN COLOR DULL ELSE COLOR BRIGHT
  148. 2100 PRINT TAB(7) X; NAME.$(X);TAB(25) SCORE(X);
  149. 2120 IF RIGHT$(NAME.$(X+5),1)="|" THEN COLOR DULL ELSE COLOR BRIGHT
  150. 2140 PRINT TAB(38) X+5; NAME.$(X+5);TAB(56) SCORE(X+5)
  151. 2160 NEXT
  152. 2179 COLOR DULL:LOCATE 22,16,0:PRINT "MOVES ARE: Q=UP, A=DOWN, [=LEFT, and ]=RIGHT     ";
  153. 2180 COLOR DULL:LOCATE 23,16,0:PRINT "Push 'G' to Gobble  ..... 'Esc' to return to Menu";
  154. 2190 LOCATE 24,22,0:PRINT "(Push trigger for joysticks)";
  155. 2200 RETURN
  156. 2300 DATA Superman     |,1000
  157. 2310 DATA Outstanding  |,800
  158. 2320 DATA WOW          |,600
  159. 2330 DATA Great        |,400
  160. 2340 DATA Good         |,300
  161. 2350 DATA Acceptable   |,250
  162. 2360 DATA Not Bad      |,200
  163. 2370 DATA Fair         |,150
  164. 2380 DATA Beginner     |,100
  165. 2390 DATA Dummy        |,50
  166. 4000 PLAY "mbl64t255o2;cc#dd#gg#"
  167. 4010 RETURN
  168. Fair         |,150
  169. 2380 DATA Beginner     |,100
  170. 2390 DATA Dummy        |,50
  171. 4000 PLAY "mbl64t255o2;cc#dd#gg